package com.sleep.drug_traceability.service;

import com.sleep.drug_traceability.dao.pojo.User;
import com.sleep.drug_traceability.vo.Result;
import com.sleep.drug_traceability.vo.UserVo;
import com.sleep.drug_traceability.vo.params.OneParam;

/**
 * @author Sleep-6000
 * @date 2022/4/23
 */
public interface UserService {
    /**
     * 查找用户
     * @param username username
     * @param password password
     * @return 用户信息
     */
    User findUser(String username, String password);

    /**
     * 根据 username 查找用户
     * @param username username
     * @return user
     */
    User findUserByUsername(String username);

    /**
     * 注册用户，将用户信息写入数据库
     * @param user 用户信息
     */
    void save(User user);

    /**
     * 获取当前用户
     * @param token token
     * @return 当前用户
     */
    UserVo getCurrentUser(String token);

    /**
     * 更新是否完善信息
     * @param user user
     */
    void updateIsPerfect(User user);

    void changePwd(Long id, String newPwd);

    void changePho(Long id, String newPhone);

    /**
     * 获取所有药品生产商和销售商用户信息
     * @return 药品生产商和销售商用户信息
     */
    Result getUserTable();

    /**
     * 启用账号
     * @param param param
     * @return Result
     */
    Result enable(OneParam param);

    /**
     * 禁用账号
     * @param param param
     * @return Result
     */
    Result disable(OneParam param);
}
